Skip to content

[Pull Request] Dev=UI separate si - #39

Closed
StardustSeemsInk wants to merge 57 commits into
dev=mainfrom
dev=UI-separate-SI
Closed

[Pull Request] Dev=UI separate si#39
StardustSeemsInk wants to merge 57 commits into
dev=mainfrom
dev=UI-separate-SI

Conversation

@StardustSeemsInk

Copy link
Copy Markdown
Member

What does this PR do?

将Dashboard的后端逻辑分离为Core项目(和Core.Contract项目),并添加了Workflow相关的功能(包括BlockScript与蓝图,它们的互译与编译运行/debug模式运行,前端编辑器窗口与工作流库管理界面)。

This pull request introduces several significant improvements to the project, focusing on dependency injection, build pipeline modernization, and general codebase upgrades. The most notable change is the addition of a centralized dependency injection (DI) setup in the application, which streamlines service management and improves maintainability. The build workflow has also been updated to use newer tools and SDK versions. Additionally, several project files have been updated for consistency and to use newer package versions, and a new Visual Studio solution file has been added for easier development.

Dependency injection and service initialization:

  • Introduced a centralized DI container setup in App.axaml.cs with the new InitializeServiceProvider method, explicit service registrations, and a GetService<T>() helper for type-safe service resolution throughout the app. This replaces previous ad-hoc service access patterns and enforces explicit registration. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3fbbf7122e50f2a6670df3dd38aeb423c79de4048ca78e183a725af616258988L1-R128), [[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3fbbf7122e50f2a6670df3dd38aeb423c79de4048ca78e183a725af616258988L51-R165))
  • Updated all usages of configuration and theme/language loading to resolve services via DI instead of static singletons. ([KitX Dashboard/App.axaml.csL51-R165](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3fbbf7122e50f2a6670df3dd38aeb423c79de4048ca78e183a725af616258988L51-R165))

Build and CI improvements:

  • Updated the GitHub Actions workflow to use actions/checkout@v4, .NET 8, and improved SDK/project checkout logic. Added an explicit reference initialization step and updated the publish step to use the correct working directory and command. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c75ece290902613d146fa97829a726b28022d805b21263008c68df094665c4d8L26-R49), [[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c75ece290902613d146fa97829a726b28022d805b21263008c68df094665c4d8R79-R84))
  • Fixed script and path references in the workflow for more robust automation. ([.github/workflows/auto-build.ymlL89-R102](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c75ece290902613d146fa97829a726b28022d805b21263008c68df094665c4d8L89-R102))

Project and package upgrades:

  • Upgraded Avalonia and Avalonia.Desktop package references from version 11.0.4 to 11.2.3 in both KitX.Dashboard.Assets.csproj and KitX.Dashboard.Fonts.csproj. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-28ed6351689783083adeef286ebb36b8e61bc77284f071f8ef39f51fac210796L42-R44), [[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3e37ff94d636e97c5c6eca6d01d0aca1475d7549d68ca452df944ee76c30f46eL18-R20))
  • Added explicit RootNamespace properties to all relevant .csproj files for clarity and to prevent namespace issues. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-28ed6351689783083adeef286ebb36b8e61bc77284f071f8ef39f51fac210796R8), [[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3e37ff94d636e97c5c6eca6d01d0aca1475d7549d68ca452df944ee76c30f46eR4), [[3]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-3ea96398b174de00d7eb32934189f9b176a22b7167a49f186097b4d2c90bb53dR5), [[4]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-51db02f1a18557d62bbf3cd4ff5c3efd80e5a74148a7f69a9648ed3a76d786d0R5))

Solution and housekeeping:

  • Added a new Visual Studio solution file KitX Dashboard.sln to group all projects and configurations, improving developer experience. ([KitX Dashboard.slnR1-R54](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-8bf4e21d1fca823f2eab4a7a004ce01c71efe6d043796140c6ab938f2a34ad29R1-R54))
  • Added a .gitignore to exclude runtime-generated folders. ([KitX Dashboard/.gitignoreR1-R3](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c4a23e28f460055ba298bfb9f687f0e0154f8c4b6a0db5be14ff19168b45e5e3R1-R3))

UI and minor improvements:

  • Enhanced the main application menu with a "More" submenu for additional commands in App.axaml. ([KitX Dashboard/App.axamlR65-R71](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-df8f26a67950b77adda986cf8f696ed87791b27164b7360e5129b97f0f40477fR65-R71))
  • Added new style includes for blueprint nodes and NodifyM controls. ([KitX Dashboard/App.axamlR48-R49](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-df8f26a67950b77adda986cf8f696ed87791b27164b7360e5129b97f0f40477fR48-R49))
  • Updated XML namespaces for new view models and converters. ([KitX Dashboard/App.axamlR6-R7](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-df8f26a67950b77adda986cf8f696ed87791b27164b7360e5129b97f0f40477fR6-R7))
  • Cleaned up and removed obsolete or placeholder files in KitX.Dashboard.Core and KitX.Dashboard.Core/Program.cs. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-0d9fc29e7d1c4ae981ec01a4a1e5a33be43ae7b359195fc79e1ac4a2a6fffb53L1-L10), [[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-ff15b873fc3f44a696ac1b3e4ec1229a30aa169dec6a2b08b64df65fb33d2817L1-L2))
  • Refactored and improved error handling and namespace usage in KitX.Dashboard.Updater. ([[1]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-51db02f1a18557d62bbf3cd4ff5c3efd80e5a74148a7f69a9648ed3a76d786d0R5), [[2]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c243c0372c42918c66fa55fd04575476f580bb4c149f1ce877375ec8accf273fL3-R3), [[3]](https://github.com/Crequency/KitX-Dashboard/pull/39/files#diff-c243c0372c42918c66fa55fd04575476f580bb4c149f1ce877375ec8accf273fL37-L65))

These changes collectively modernize the codebase, improve maintainability, and set a strong foundation for future development.


StardustSeemsInk and others added 30 commits August 3, 2025 22:05
- ConstantTable 引用 KitX.Core.ConstantTable 获取端口信息
- AppViewModel 订阅 PluginDisconnected 事件,从 UIStateService.PluginInfos 移除断开插件
- 使用 PluginInfo.Name 属性比较替代 Equals() 引用比较
- PluginBarViewModel 和 RepoPageViewModel 响应插件状态变化
- WorkflowScriptEditorWindowViewModel 传递已连接插件列表给脚本引擎
Fix: normalize Csharpell reference path casing for Linux
- 新增 VariableNode 节点 UI(调色板按钮、类型选择器模板,Teal 主题色)
- 实现 ResolveVariablePinType 动态类型解析,ConstNode/VariableNode 类型变更自动传播到 Get/Set 端口
- BlueprintConnectionVM 订阅源端口 PinType 变化,连线颜色实时更新
- 加载蓝图时批量解析 Get/Set 端口类型并初始化 Const 输出端口颜色
- CallHelperNode 返回类型推断,Get/Set VarName 变更触发重新解析
- ExportDrawingToBlueprint 从当前 VM 重建 ConstValues
- WorkflowScriptEditorWindowViewModel 构建 constantOverrides 同步用户编辑值到执行
- BlueprintEditorViewModel: Branch 节点输出引脚按 descriptor.RelativeY
  排序(True在上/False在下), 替代字母序排序
- WorkflowScriptEditorWindow: TextChanged 添加 500ms 防抖, 减少频繁重解析
ViewModel层:
- 新增 PluginFunctionPaletteItem / HelperFunctionPaletteItem 模型类
- BlueprintEditorViewModel 新增 PluginFunctions / HelperFunctions 集合
- 通过 IPluginServer.Connections (DI) 获取已连接插件函数列表
- 通过 WorkflowEditorBridge 获取当前脚本 Helper 函数列表
- 订阅 IPluginService.PluginStatusChanged 事件自动刷新
- 新增 AddPluginCallNode / AddHelperCallNode 命令, 带参数引脚和类型标识
- SetBridge 时自动刷新 Helper 函数列表
- Cleanup() 取消事件订阅, OnClosed 时调用

AXAML层:
- Actions Expander 中静态按钮替换为动态 ItemsControl
- Plugin Functions / Helper Functions 子 Expander (折叠)
- 无数据时显示兜底静态按钮
- 修复 Helper 节点重复 Return 引脚 (跳过 descriptor 模板的 Return)
…赖包,迁移 FAColorPicker 至原生 ColorView(FAColorPickler已被FAUI库弃用),移除未使用的Microsoft.Extensions.DependencyInjection
- BlueprintNodeVM 新增 IsExecuting/ExecutionCompleted/IsBreakpoint 状态及 BorderBrushOverride/ThicknessOverride 计算属性
- OnIsExecutingChanged/OnExecutionCompletedChanged/OnIsBreakpointChanged 触发边框重绘通知
- WorkflowEditorWindow 新增 WireUpDebugHighlight,直接操控 Node 控件 BorderBrush/BorderThickness 实现绿色高亮
- BlueprintNodeStyles.axaml 绑定调试高亮到 BorderBrushOverride/BorderThicknessOverride
- BlueprintConnectorVM 新增 RuntimeValue 属性
- BlueprintEditorViewModel.OnDebugVariableChanged 按变量名查找连接器并设 RuntimeValue,结束后清空
- CreateConnectionFromBlueprintConnection 中注册 PubVar 名称至 _variableNameToConnector 映射
- CancelExecution 补设 IsExecuting=false 修复 Stop 按钮状态
- WorkflowEditorWindow.axaml: 连接器 DataTemplate 新增 ToolTip.Tip="{Binding RuntimeValue}"
- WorkflowEditorViewModel 暴露 BlueprintVM.IsDebugging/IsPaused 等调试状态
- AppFramework.RunFramework 重构启动流程:DI→读取日志级别→配置Logger→Load配置→重配Logger
…nager/IRealPluginManagerBridge 接口并初始化 ServiceLocator、WorkflowPageViewModel 改用 ITriggerManager、BlueprintEditorViewModel 适配新库命名空间
[Pull Request]🧩 Refactor(Workflow): 适配 KitX.Workflow 独立库
崩溃修复(根因在 NodifyM 库,详见 fork 的 ava11 分支):
- NodifyM.Avalonia 从 NuGet 1.1.9 切换为 ProjectReference 指向
  Crequency/NodifyM.Avalonia fork 的 ava11 分支(携带 SelectItem null-guard 补丁)
- 保留 NuGet 1.1.9 fallback for 无源码树构建

前端呈现优化(C1-C5):
- C1 修新节点堆叠:BlueprintEditorViewModel 新增 GetNextNodeLocation(),
  5 处硬编码 Location=(100,100) 改为按 Nodes.Count 级联偏移,新节点不再全叠同点
- C2 面板可调宽:WorkflowEditorWindow 两处静态 Border 分隔条改为 GridSplitter
  (ResizeDirection=Columns, ResizeBehavior=PreviousAndNext),节点面板/输出面板可拖拽调宽
- C3 输出面板增强:新增 ClearOutputCommand + Clear 按钮(X 图标,绑定命令);
  OutputScrollViewer/OutputTextBox 命名 + code-behind 监听 ExecutionOutput 变化
  ScrollToEnd 自动滚底;7 个语言文件新增 Text_WorkflowEditor_ClearOutput 键
- C4 引脚 tooltip:BlueprintConnectorVM 新增 PinTypeText 属性,输入/输出连接器
  tooltip 从 RuntimeValue(仅调试可见)改为 MultiBinding 显示 "Title (PinType)"(始终可见)
- C5 跨平台字体栈:代码编辑器 + 输出面板 FontFamily 从 Consolas 改为
  "Cascadia Mono,Consolas,Menlo,monospace"
1. 活动日志面板接入工作流 Print() 输出
   - OnWorkflowExecutionResult 把 Output 每行以 │ 前缀缩进追加到
     ExecutionLog(成功与失败时均显示),便于在不打开编辑器的情况下
     追踪执行过程

2. 日志面板高度可调
   - 面板上方加 GridSplitter(6px),用户可拖动调整高度
   - 面板加 MinHeight=40 防止拖到不可见

3. 运行/触发/停止/删除全生命周期日志(Debug 模式)
   - mounted/trigger-armed/trigger-miss/run/done/error/stop/delete
   - 仅 Debug 构建可见(#if DEBUG 控制 IsDebugLogVisible)

4. ClearLogCommand 绑定扫帚按钮清空日志
- 将 TryExpandStringConcatPins 泛化为 TryExpandVariadicPins,改为读取
  NodeDescriptor 的 InputVariadic/OutputVariadic 标志,输入/输出双向通用
- 消除 StringConcat 的硬编码函数名匹配,改为标志驱动
- 新增 Switch 节点面板按钮(AddSwitchNodeCommand)
- 新端口命名从节点现有端口数推导,每实例独立,往返自动保真
跟随 Workflow 后端 Contract→Abstractions 重命名,更新 BlueprintEditorViewModel
的 using KitX.Workflow.Contract → using KitX.Workflow.Abstractions。

# Date: 2026-06-19
# Author: StarInk
Workflow项目将根目录服务归集至 Services/ 子目录(namespace KitX.Workflow.Services),同步更新 Dashboard 中唯一一处对 WorkflowOutput 的限定名引用。

Date: 2026-06-20
Author: StarInk
@StardustSeemsInk
StardustSeemsInk changed the base branch from main to dev=main August 3, 2026 16:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants